package com.zmn.plat.services.interfaces.category;

import java.util.List;

import com.zmn.plat.model.entity.category.BaseCategoryAttributeEnum;
import com.zmn.plat.model.entity.category.BaseCategoryAttributeEnumQuery;

/**
 * @author duanzuocai
 * @version v1.0
 * @类说明：产品分类属性值定义
 * @since 2018/10/19 1421
 */
public interface BaseCategoryAttributeEnumService {

    /**
     * 描述 BaseCategoryAttributeEnum key 查询数据
     *
     * @param enumId
     * @return BaseCategoryAttributeEnum
     */
    BaseCategoryAttributeEnum findByKey(Integer enumId);

    /**
     * 描述 根据查询条件分页查询
     *
     * @param query
     * @return List<BaseCategoryAttributeEnum>
     */
    List<BaseCategoryAttributeEnum> listPageByQuery(BaseCategoryAttributeEnumQuery query);

    /**
     * 描述 根据属性id批量查询
     *
     * @param attrIds
     * @return List<BaseCategoryAttributeEnum>
     */
    List<BaseCategoryAttributeEnum> listByKeys(List<Integer> attrIds);

    /**
     * 描述 根据查询条件统计满足条件的数据条数
     *
     * @param query
     * @return Integer
     * @since 2018/10/15 1641
     */
    Integer countByQuery(BaseCategoryAttributeEnumQuery query);

    /**
     * 描述 根据主键修改数据
     *
     * @param baseCategoryAttributeEnum
     * @return 执行结果码
     */
    void updateByKey(BaseCategoryAttributeEnum baseCategoryAttributeEnum);

    /**
     * 更新排序
     * 
     * @param enumId
     *            ID
     * @param sort
     *            排序
     * @param updater
     *            更新人
     */
    void updateSortKey(Integer enumId, Integer sort, String updater);

    /**
     * 根据 id 批量修改状态
     * 
     * @param arrayIds
     *            id's
     * @param status
     *            状态
     * @param updater
     *            更新人
     */
    void updateStatusBatch(List<Integer> arrayIds, int status, String updater);

    /**
     * 描述 新增数据
     *
     * @param baseCategoryAttributeEnum
     * @return 执行结果码
     */
    Integer insert(BaseCategoryAttributeEnum baseCategoryAttributeEnum);

    /**
     * 描述 根据主键删除数据
     *
     * @param enumId
     * @return 执行结果码
     */
    Integer delete(int enumId);

    /**
     * 根据属性查询所有值
     *
     * @param attributeId
     *            id
     * @return
     */
    List<BaseCategoryAttributeEnum> listAttributeId(Integer attributeId);

    /**
     * 通过分类查询所有值
     *
     * @param categId
     *            分类ID
     * @return
     */
    List<BaseCategoryAttributeEnum> listByCategoryId(Integer categId);

}
